package Day20.Predicate;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day20.Predicate
 * @Author:hyhWTX
 * @ClassName:Demo04Predicate_negate
 * @CreateTime:2022年-10月-02日 17:40
 * @Description: TODO (一句话描述以下该类的功能)
 */


import java.util.function.Predicate;

/**
 * 需求:判断一个字符串长度是否大于5
 * 如果字符串长度大于5，返回false
 * 如果字符串长度小于5，返回true
 * 所以我们可以使用取反符号!对判断结果进行取反
 * Predicate接口中有一个方法negate，也表示取反的意思
 *    default Predicate<T> negate() {
 *         return (t) -> !test(t);
 *     }
 *
 */

public class Demo04Predicate_negate {
    /**
     * 定义一个方法：方法的参部，传递一个字符串
     * 使用Predicate接口判断字符串的长度是否大于5
     */
    public static boolean checkString(String s, Predicate<String> pre1) {
//        return !pre1.test(s);
        return pre1.negate().test(s);
    }

    public static void main(String[] args) {
        //定义一个字符串
        String s = "shjiaj";
        //调用checkString方法,并且传递Lambda表达式
        boolean b = checkString(s, (String str) -> {
            return str.length() > 5;
        });
        System.out.println(b);
    }
}
